package main

import "fmt"

/*
接口只声明方法，并不实现，由它的实现者实现接口内的方法
实现接口的结构体，必须实现接口的方法
*/
type Diver interface {
	DiverName() string
	getTime() string
}

// 声明两个结构体
type Mysql struct {
	name string
}

type MgDB struct {
	name string
}

// 两个结构体实现接口内的所有方法
func (mysql Mysql) DiverName() string {
	return mysql.name
}
func (mysql Mysql) getTime() string {
	return mysql.name + "登录于2025-01-23 12:23:12"
}

func (mgdb MgDB) DiverName() string {
	return mgdb.name
}
func (mgdb MgDB) getTime() string {
	return mgdb.name + "登录于2048-01-11 12:11:11"
}

func main() {
	var sqlDriver Diver
	var MgdbDriver Diver
	// 多态：通过一个接口完成不同结构体的功能
	sqlDriver = Mysql{name: "MySql"}
	MgdbDriver = MgDB{name: "MongDB"}

	fmt.Println(sqlDriver.DiverName())
	fmt.Println(sqlDriver.getTime())
	fmt.Println("--------------------- ")
	fmt.Println(MgdbDriver.DiverName())
	fmt.Println(MgdbDriver.getTime())
}
